# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.DiscoveryEngine.V1.Model.GoogleCloudDiscoveryengineV1TrainCustomModelRequestGcsTrainingInput do
  @moduledoc """
  Cloud Storage training data input.

  ## Attributes

  *   `corpusDataPath` (*type:* `String.t`, *default:* `nil`) - The Cloud Storage corpus data which could be associated in train data. The data path format is `gs:///`. A newline delimited jsonl/ndjson file. For search-tuning model, each line should have the _id, title and text. Example: `{"_id": "doc1", title: "relevant doc", "text": "relevant text"}`
  *   `queryDataPath` (*type:* `String.t`, *default:* `nil`) - The gcs query data which could be associated in train data. The data path format is `gs:///`. A newline delimited jsonl/ndjson file. For search-tuning model, each line should have the _id and text. Example: {"_id": "query1", "text": "example query"}
  *   `testDataPath` (*type:* `String.t`, *default:* `nil`) - Cloud Storage test data. Same format as train_data_path. If not provided, a random 80/20 train/test split will be performed on train_data_path.
  *   `trainDataPath` (*type:* `String.t`, *default:* `nil`) - Cloud Storage training data path whose format should be `gs:///`. The file should be in tsv format. Each line should have the doc_id and query_id and score (number). For search-tuning model, it should have the query-id corpus-id score as tsv file header. The score should be a number in `[0, inf+)`. The larger the number is, the more relevant the pair is. Example: * `query-id\\tcorpus-id\\tscore` * `query1\\tdoc1\\t1`
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :corpusDataPath => String.t() | nil,
          :queryDataPath => String.t() | nil,
          :testDataPath => String.t() | nil,
          :trainDataPath => String.t() | nil
        }

  field(:corpusDataPath)
  field(:queryDataPath)
  field(:testDataPath)
  field(:trainDataPath)
end

defimpl Poison.Decoder,
  for:
    GoogleApi.DiscoveryEngine.V1.Model.GoogleCloudDiscoveryengineV1TrainCustomModelRequestGcsTrainingInput do
  def decode(value, options) do
    GoogleApi.DiscoveryEngine.V1.Model.GoogleCloudDiscoveryengineV1TrainCustomModelRequestGcsTrainingInput.decode(
      value,
      options
    )
  end
end

defimpl Poison.Encoder,
  for:
    GoogleApi.DiscoveryEngine.V1.Model.GoogleCloudDiscoveryengineV1TrainCustomModelRequestGcsTrainingInput do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
